package dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import to.Funcionario;
import to.SessaoUsuario;
import to.Usuario;
import util.HibernateUtil;

public class UsuarioDAO {

	public Usuario pesquisarUsuario(String user) {

		Usuario usuario = new Usuario();
		Session session = null;

		try {
			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Usuario.class);
			if (!(user == null)) {
				criteria.add(Restrictions.like("login", user));
			}
			usuario = (Usuario) criteria.uniqueResult();
		} catch (Exception e) {
			e.printStackTrace();
		}

		return usuario;
	}

	public Funcionario pesquisarFuncionario(Usuario user) {

		Funcionario fuc = new Funcionario();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Funcionario.class,
					"func");
			criteria.add(Restrictions.eq("func.usuario", user));
			fuc = (Funcionario) criteria.uniqueResult();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return fuc;

	}

	public List<SessaoUsuario> listaUsuarioOnline() {

		List<SessaoUsuario> lista = new ArrayList<SessaoUsuario>();
		Session session = null;

		try {

			session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session
					.createCriteria(SessaoUsuario.class, "s");
			criteria.add(Restrictions.eq("s.statusSessao", "Aberta"));
			criteria.addOrder(Order.asc("s.usuario"));
			//criteria.add(Restrictions.eq("s.dataInicio", new Date()));
			lista = (List<SessaoUsuario>) criteria.list();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return lista;

	}

}
